C++ STL 标准库实战

📚 共计 30 章节
01
C++ STL 总览
STL 六大组件(容器、算法、迭代器、仿函数、适配器、空间配置器)概述,以及它们如何协同工作。
总览架构
02
std::vector 详解
动态数组的实现原理、内存增长策略、常用 API(push_back, emplace_back, resize, reserve)及性能优化。
序列容器动态数组
03
std::deque 详解
双端队列的底层结构(分段连续空间)、与 vector 的对比、适用场景。
双端队列分段连续
04
std::list 详解
双向链表的实现、插入删除操作、splice 合并操作、与 vector 的对比。
双向链表splice
05
std::forward_list 详解
单向链表的实现、forward_list 的特点、与 list 的对比。
单向链表轻量
06
std::array 详解
静态数组的封装、与 C 风格数组的对比、使用场景。
静态数组安全
07
std::string 详解
字符串类的实现、编码处理、查找替换、性能优化(SSO 小字符串优化)。
字符串SSO
08
std::set / std::multiset 详解
红黑树实现原理、有序性、查找效率、自定义比较器。
有序集合红黑树
09
std::map / std::multimap 详解
键值对存储、红黑树实现、operator[] 的陷阱、插入与查找。
键值映射operator[]
10
std::unordered_set / std::unordered_multiset 详解
哈希表实现原理、负载因子、冲突解决、自定义哈希函数。
哈希集合负载因子
11
std::unordered_map / std::unordered_multimap 详解
哈希映射的实现、与 map 的对比、性能调优。
哈希映射性能
12
std::stack 详解
栈适配器的实现、底层容器选择、应用场景(括号匹配、表达式求值)。
适配器
13
std::queue 详解
队列适配器的实现、底层容器选择、应用场景(BFS、任务调度)。
队列BFS
14
std::priority_queue 详解
优先队列的实现(堆)、自定义比较器、应用场景(Top-K 问题)。
优先队列
15
std::pair 与 std::tuple 详解
结构化绑定、元组的使用、与自定义类型的对比。
元组结构化绑定
16
迭代器基础
输入/输出/前向/双向/随机访问迭代器、迭代器失效问题、反向迭代器。
迭代器分类
17
迭代器适配器
插入迭代器(back_inserter, front_inserter, inserter)、流迭代器、移动迭代器。
适配器插入迭代器
18
算法概览与分类
非修改式算法(find, count, for_each)、修改式算法(copy, transform, replace)、排序相关算法。
算法分类概览
19
查找与计数算法
find, find_if, search, binary_search, lower_bound, upper_bound, equal_range。
查找二分
20
排序与分区算法
sort, stable_sort, partial_sort, nth_element, partition, stable_partition。
排序分区
21
数值算法与集合算法
accumulate, inner_product, adjacent_difference, set_union, set_intersection。
数值集合
22
仿函数(函数对象)
内置仿函数(less, greater)、自定义仿函数、lambda 表达式与仿函数的关系。
仿函数lambda
23
适配器详解
函数适配器(bind, not_fn)、容器适配器(stack, queue, priority_queue)、迭代器适配器。
适配器bind
24
空间配置器(Allocator)
std::allocator 的工作原理、内存池设计、自定义分配器场景。
内存管理分配器
25
C++11/14/17 对 STL 的增强
移动语义、完美转发、emplace 系列、string_view、optional、variant。
现代C++emplace
26
C++20 对 STL 的增强
ranges 库、concepts、协程与 STL 的交互、span、format。
C++20ranges
27
STL 性能优化实战
选择合适的容器、避免不必要的拷贝、reserve 预分配、迭代器失效排查。
性能优化
28
STL 与多线程
容器线程安全性分析、并发访问策略、并行算法(execution policy)。
多线程并行
29
STL 实战项目一:日志系统
基于 STL 的日志系统设计(使用 map、vector、string、fstream、mutex)。
项目日志
30
STL 实战项目二:文本搜索引擎
基于 STL 的简易文本搜索引擎(使用 unordered_map、set、算法、lambda)。
项目搜索引擎